{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from skimage import measure\n",
    "from skimage import filters\n",
    "from numba import njit\n",
    "import numpy as np\n",
    "import cv2\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sever.data_loader import PostProcessor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def random_channel_mask():\n",
    "    n = 5\n",
    "    l = 512\n",
    "    im = np.zeros((l, l))\n",
    "    points = l * np.random.random((2, n ** 2))\n",
    "    im[(points[0]).astype(np.int), (points[1]).astype(np.int)] = 1\n",
    "    im = filters.gaussian(im, sigma= l / (10. * n))\n",
    "    blobs = im > 4 * im.mean()\n",
    "    return blobs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(4, 512, 512)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fc60a1b53c8>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x864 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "a = random_channel_mask()\n",
    "b = random_channel_mask()\n",
    "c = random_channel_mask()\n",
    "d = random_channel_mask()\n",
    "p = np.stack([a, b, c, d], axis=0)\n",
    "print(p.shape)\n",
    "fig, axs = plt.subplots(1, 4, figsize=(12, 12))\n",
    "axs[0].imshow(a)\n",
    "axs[1].imshow(b)\n",
    "axs[2].imshow(c)\n",
    "axs[3].imshow(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "pp = PostProcessor(min_class_sizes=[200, 200, 200, 200])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4, 512, 512)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mask = pp.process(p)\n",
    "mask.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fc601538be0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABIgAAAQVCAYAAADZ1PFeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdX6xs2X0X+O+adqdN549wh9jTt23GHk2bkY2cG2g5SBmNMjHmegKirZGCOhKokSz1SxCgQSLtQRqJB0ueeUDMSx4sQO4Rf4wFRLaiTC6dhihCSuzE4cb4T2w3cUhat+XmT1ASIjrYrHm4ddzVp0+d2lW1d+299vp8pKNzzj5VdVbtvfZvrf2rtdYutdYAAAAA0K//Zu4CAAAAADAvCSIAAACAzkkQAQAAAHROgggAAACgcxJEAAAAAJ2TIAIAAADo3GQJolLK+0opXyqlPF9KeXqq/wNwHbEIWAKxCFgCsQi4Tqm1jv+ipdyX5MtJ3pvkhSS/kOSHa61fGP2fAewgFgFLIBYBSyAWAftMNYLo3Umer7X+aq3195J8LMnjE/0vgF3EImAJxCJgCcQi4FpTJYgeSfIbW7+/sNkGcE5iEbAEYhGwBGIRcK3XTfS65Yptr5rLVkp5KslTSXJf7vujD+Y7JirK+b39Xb970vO//NkHRyoJHO+YevyZz77872qt3zVBcY51UCz61gfLH/0f/4dvOekfOn9hfr+d32wuFiXr7hvRn1P6w2tpS/9z/lN+r7581fk/F7EItvQSpw6JRVMliF5I8pat39+c5O72A2qtH0nykST5jvJQ/d7ynomKcn63b9856fm3btwcqSRwvGPq8X0PP/9vJijKKQ6KRY999+vrp29vP/wwt27czPcuqRsInfrp+o+ai0XJuvtG9OeU/vBa+sKfqs/NXYTLxCLYuH33TpLvPOk1WolVh8SiqaaY/UKSR0spbyulfEuSJ5J8cqL/BbCLWAQsgVhEV+5deM33fHYSi2Dj1OROK8mhQ02SIKq1fj3JX0hyO8kXk3y81vr5Kf4XMI01BL1zxqI17C9gGvpFwBKIRcA+U00xS631J5P85FSvDzCEWAQsgVhET27duHnSKCAfukxHLAKuM9UUM2AFdNCGsZ8AAIDWSRAB15L8uJ79AwAA7Tm2H7/m/r8E0QROqTBrrmy069aNm9fWzX1/X6se3zMADOHCC2jBoTFn7TFqsjWIenfM3Ou1V7aWDTmWPRy/Ht7jEPYDAIxP+wrMYei1ew8xSoJoQockiXqobK0aegxv373jOK6c4wsAw120my68gKW7HIN6vbaTIJrYkCRRjxWvFYeOAus1kKzFlz/7oOMHACO7rj+s3QWWqNfYJEF0Brs+Pem10gEA0Bf9XoDlkyA6Iw1jWw4dPbT9PMcaAACAlriLGQAAAEDnJIjgCseOHhrr+QAAAHBOEkQAAAAAnZMgAgAAAOicBBEAAABA5ySI4Aqn3oXMXcwAAABoiQQRAAAAQOckiGCHY0cBGT0EAABAaySI4BqHJnskhwAAAGiRBBGMRHIIAACAVkkQwR63btzcm/yRHAIAAKBlr5u7ANAKSSAAAADWyggiAAAAgM4ZQQQAzOr23Ts7/2b0JgAs2+27d7TXKyFBBCu0fbElWANLdV1i6PJjxDIAWIar2u/L27TbbZIgghXZF6wFamAphiSHAIDlOKTtNqqoTdYgghW4fffOQZ/EA8zpmFgkfgFAW7Td7ZEggsYdGngFagAA4BDHXkO49jjNufefKWbQIUM+gRaJXQDA2l1OCp1zfScJImiYjHyfLAIIAADrMvTabsoPzEwxg05JLrVn11pTQ9egAgAAlmcpy4ZIEEGjJAT6YRFyAADmcmofUx91GlPsVwkigBXRALNmplMCwPmd2v5qv6+3pP67BBHAgrkdOGukowgAcLqx+/0SRNAoF1hAT8Q8AIBpuYsZAHB2t27cHPypl+QQLN+u89n5Swuua4/U4dPYf9db2sh/CaItGjZ6ol4Dc7uIQzrmbdBPYpfrzuGLv6knLNW+C/QpbynekkM+2GG4pe1XCaIMCwqJho3lWVpAATiG9nX5JAC4yiF9EBfZLNHQOqz+3nPotYd91p7u1yA6tGGDpTkm8ArWAAxx++6dgy6g4Dqt15GL8+HyF2069Ng51vcMuY64deOm641GdZ0gcncg1uKQACxYAzAV/aR+HHusW60j+0bRtfq+etVb/R3bRQJoOxF0+XfOY+z9bYrZEQwxZIn2reWhzvbDsR6HdXHonQshdumpbphGB/up96c5dtmQKfb73hFEpZS/U0p5qZTyua1tD5VSni2lfGXz/Q1bf/tgKeX5UsqXSim3Ri/xSHpq2OjL5Yz+WjL5a41F+6zh2LVo6Np09KmHeHRKHXd+0LNz1v8eYtEF0/tYu6X0+YdMMftokvdd2vZ0kudqrY8meW7ze0op70jyRJJ3bp7zY6WU+0YrLdCzj6bTWGQK4XlZb4UBPppO4xGMoZX42cA0pI9m5bFoXyLIkiGsydB+/JQDAPZOMau1/mwp5a2XNj+e5Ps3Pz+T5GeS/Ohm+8dqrS8n+Wop5fkk707yc+MUdznGGEK6LzhNcdBNP6JVvcei7XP08nns/B3PMQtW2v/96T0eQQ9aSCKsORYdcyOhc7XH2n6mdLlunbu+HbsG0ZtqrS8mSa31xVLKGzfbH0ny81uPe2Gz7TVKKU8leSpJXp8HjyxGu4YEvTGD3dDpEoIdjekyFjlPYZG6jEdwDO3YpLqNRUMvpI9d72X7+XAu565vY9/FrFyxrV71wFrrR2qtj9VaH7s/D4xcjGU79y0Vj8nAQ+PEIg7WwFQC2iQeQYcW2DY0E4sWuO+gG8eOIPpaKeXhTVb64SQvbba/kOQtW497c5K7pxRwqY7N5J074B07L1dmnEZ0H4ugR/vatvsePlNBXk08ohunjsBgUl3HItcxcJpjRxB9MsmTm5+fTPKJre1PlFIeKKW8LcmjST59WhGn0VrgsAAbXKn5WAQcZsFt26ri0Sn9pNb6WJxXL/Vjxve5qlg0lWOPTy/1l34Nuc39P8i9xcv+UCnlhVLKB5J8OMl7SylfSfLeze+ptX4+yceTfCHJTyX5kVrrN6Yq/FxaGT10ipbKSh/EImApbZN4BC6Ul2CNsWgpcR56NeQuZj+840/v2fH4DyX50CmFOpfWhscaMknP1hyLWIZj2wRxuT+9xKPW+kmc36F1pKV42UL97yUWTWXN9ReONfYi1c059ERvJTAsvUEDgENo1+ax1n4S4xl616ie6kZP73Vs59536i+82rGLVK/KkOyxoMCYLtc39QuWwaeJ8Fr6Seyzffy360rr9aKFUUSc7nI9NWuDnkkQbbQQBFooI7td18FYU2cKWjf0gsC5Sk/Ud4ZaW125eD/ahTaMcQwcR3rW/RSztRLYluWQT598UgXz2xdDxViAvlwX901BGpc7jMF8jCA6o5aGqQqw4znmmBvaCvNzDgKwTbtwPi1dN8GaGEHUiGMaJI0YAADQoqHXMkZwwXgkiM6shUSPADueUz758KkJANCb23fvfPML9iV/XLfAuEwxm8EhQyZPDXruyAPAGphuAOu169y+2K5/ijoA52EE0UyGZMPHCoRDX0vgHdcYFzIuhgBeoZ2C9RnS1zGiCOA8jCCa2Tk7u1fdplNnG4CWGEkE63HouewmHgDTWlWCSOJjGPsGgJZd9YHH9vbk+TOXCDiURC/A8jSfINo3Z/mCpAgArIu2Hdp06k08nPsA02h6DaJDGhefUgAAAABcrdkE0TEJH0kiAACYj5t4ACxXk1PMNAoAAFy2q49oStIy6MMDLFuzI4iOpWECAFiXfbdB1/8DgP26SxABALAeQ5M/+5JITGvMfW9EGMA0mksQadhphc4LAID+O0ArmksQAQBA4qYlLbC/AdohQQQAQHNOSTxIWpzHFPvZCG2A6TSXINIo0JJT66v6DgBwj34RwLSaSxCdSsMCAABt0YcHmN7r5i7AMW7duGloMEl2D11eUifi2Pq6pPfQq+uOm+MD9KiFdpf1Ub8AzqOrEUQal/XYd6vapd3K9tC6p67Ob1/9WVodA5haS+0u81MfANrTbILIBXe/DulwLKlzMrQOqqvza7WOAUzhkOSPmMjY9IsAzqfZBFFyr8EY0mhoWNaj9dvZXldnh9ZnprWk+gLAbqe0mdrb6dnHAO1pcg2iyy4aoO0LO40SS6Z+rsvtu3cc0xntS+o5NnC8Yz+Ycd4xBvUI4LyaHkF02cUIDI3JOp0yssOoEIZ4+7t+d+4icKAh57bzH47TQrt7TJ9PP7ENjhPA+a0qQQRAP6wVBRxK0gEAdlvFFDMA+rKUaS+Xy+HiE87vqqUGrnscy+dYAcxDgogm+PQf5rHEC66548G+W31fcIED5+WcW55bN24eHLMdR4D5mGIGsPHlzz44dxEWY+htredO1hzq1PKa1gYwHckhgHkZQcTiuciCZTvnHYtaiwfu5gQA57Wrr6A9hv2MIGLRxroY1CAwlDviHL++z9r18B5h2ymxbW1xkeOIm5zTvtHP6iPsZwQRiySA0woXQecjLgAAVxnaR7h4nP4bXM0IIhZl6Lonh9AAcKhbN24OqjdrrFuSMMA2oyo5J20Qx1BvYDwSRCzGFMFdJ5VT7EoUDU0gAayBeMcxXLRzDsfWM/UTrmaKGYsgOcSSqUvr4VjCcYbcrtz5BbTEjSTgtfaOICqlvKWU8s9LKV8spXy+lPKXNtsfKqU8W0r5yub7G7ae88FSyvOllC+VUm5N+QbgKoL9+ohFwBL0HIsuRk9ut7FXbYNTPvgzsmOYuWLRxXIQl7+AdRgygujrSf5KrfWXSinfnuQzpZRnk/z5JM/VWj9cSnk6ydNJfrSU8o4kTyR5Z5IbSX66lPL2Wus3pnkLtM6dyhhILDqDIaMEoHNiUbS5sABni0VD+gVzLP6svwLj2zuCqNb6Yq31lzY//3aSLyZ5JMnjSZ7ZPOyZJO/f/Px4ko/VWl+utX41yfNJ3j12wWGbjur6iUXL1sM5aLFeErEIWIZzxaK3v+t3DyqXpA207aA1iEopb03yPUk+leRNtdYXk3sBqpTyxs3DHkny81tPe2GzDV5DI8IxxKJXu+o8OiUxsdZRRGMka9a6bziOWAQswdJi0bnW9llCm7zr//uAiFYNvotZKeXbkvzjJH+51vpb1z30im31itd7qpTyi6WUX/wveXloMeA1BOC+iEWvuG7e/6lrAhxyXvV2Dg55v9ZkWb+xY9HmNZuNR8A8po5F//bfNz0bdjL7+llzJ67gWIMSRKWU+3Mv8Py9Wus/2Wz+Winl4c3fH07y0mb7C0nesvX0Nye5e/k1a60fqbU+Vmt97P48cGz5gY6IRa8Y2vGYOkl0ziTIqaOixrQrASQx1IcpYlHSbjwC5nGOWPRd33nfUWVrIUFybHt9SB+shf0A24bcxawk+dtJvlhr/Rtbf/pkkic3Pz+Z5BNb258opTxQSnlbkkeTfHq8IrMmLqQYSix6xaGdjVOTRBIhu23fwcn+6INYBPstKaG/VmLRPeeuLxI+rN2QNYi+L8mfS/KvSikXZ8T/keTDST5eSvlAkl9P8kNJUmv9fCnl40m+kHur6/9I63fqYLl0IroiFmW+jslSzrVj1htYStlZDbEIBhCvJycWneCYunZsH+xcazLBGPYmiGqt/yJXz1lNkvfseM6HknzohHIBvIpYdJo1dU6GXnSs5f2yLGIRsARi0SsOTUbO0T9YUz+MdRu8SDVM5dhgKchCv66b0mW6F8AyDI3F4janGlqH1DO43kG3uYeptJD5B5ZHLABYtos47XbgnMN2fRpz1I61h+iFBBGLYdoITGusjtJV56nzEoDraCf6soTjvYQyQGskiFiUy1n/q7YDxzslSXRdAvfib85VAOjbGvsCxyy6Di2SIGKx1ti4QKuGdooswggA6/Hlzz44dxFgtZb4AatFqgEaMtUUsTkfDwAsl8XGT2e/cOH23Tvf/Lpu21wkiAA6NHUDtIQGDgAYx77kTw8JkB7eI9Ma0j+eO1FkihlAY8aaBz9kOphEDwBwQZLkcL3uM3cufLVjRuTPsa+MIAJokNu2AgCc16H9rx6TIftGwPTY92zpPUsQATSqx04HAMCchq611GM/7ZCbmrSUNOmJKWaww3VBq8eADwAA3LN9PeAursfpYb+dkgibY/80nSDat7PXXtkY3yFZ7yHUQaY2xnpEPTTOAABT0Y86PhGiH7osTU4xGzokzbA1DjFFfTF8knOYslHVYAOsy5Jupwysg3iyHs0liI5Z/Rv2cctvejZFEkhiCWBZrkoKSRYBSyAG7XbufdNcgugYKhzXUT/gepI9AO0y8h6AoZpKEGm4aJn6y5SmTuIc8voSSgDLYOQ90ArxZxmaXqT6EBa/AnitQxM/7u4HAMAU1tjPHOuGMhevNbVmEkQyikxBvWJNDm2AjmlkWm2cAXrjjkLAmmzHtDFj1DmSL2MkiZLdcX3MsjeTIAJgv6ENkM4/ALAm57h45mpjJUCGOiWps6ucl7e3VG/GTOw3tQYRAPvdunFzZyNx3d8AAFp0XXLCnfrWa8p11sauM1P3wccqbzMjiM6dlaQP6hVrJhEE0Kcx1rvQhtCCYy741e1pzHVdNeS4njLldt9rH+ritabYV2PEbiOIAAAAaIoPeZdnzuTb0KljY772KS5GFF3+OtWpZe0mQSRTzC7qBgCwJvo2sJvE0rTmXM7g8nTCMY/1uerN3PG7mSlmielAtG3ukx0AYAh9FpbONeHyXRVHznXc1I/jNTeCyG2ZmcLUdUQdBAAAeuZmKedxSoKsuQRRctjFtgrIUFMFLHUQADg3/Q/YzQiTeYlPy9XUFLNt+1b/Vuk41lgry7deB51bANA2yzMAjKeVOzyeUsZmE0QXWjhAtKnXurWvI+kWoQDQjmOSRPserw9A69Th+Ulg7zbnvmlyihkwjUMCkYAOAG0Yexr95TsFAbAOEkRAkuMSPjqHAMxBguI4F4miq76O4RgwFyOA1qG143jO8h77v04tY/NTzIB5tTIXF4B27UpEbG/XFs3D1HPmcuw0HHV1WUw1G88YddsIIkBQBmCxhrZRRhXNy76nBZJDy+S4XO2QEZ5j7UMJIuBkOoUATEH7AlxnjgtopjHm8Tl1+uyu15zLvv89ZtlWOcXsus6EwAAAsHzHJodMfT7cWIk4+565XDdNSZ1sxxjTzS4f77VMYTtXPV5dgmjILboFCQCA9dLfg/4459fh4jiOub7UKUmi3urVqqaYHTJHnWW7WEfAegIAAO3QbwPGcEhiZsh0smOmnPWWHEpWNILo0MbIJ0vLtO8uJY7ZMjkuANAmCR1gqbavMa6KVcdcgwwZodTztc0qEkTmqK/DkOPomAEALJv+GjC2sWPKlDGq5cENe6eYlVJeX0r5dCnll0spny+l/PXN9odKKc+WUr6y+f6Gred8sJTyfCnlS6WUW1O+AdbhkCSfT7rGd0rwOlfgE4uAJRCLgCUQi2B5Li+P0uKyKUNGEL2c5Adqrb9TSrk/yb8opfx/Sf63JM/VWj9cSnk6ydNJfrSU8o4kTyR5Z5IbSX66lPL2Wus3pngDp+5on3DM75hj6LiN75jF2858DBYdi1q379g73+CbxCJWo5ULFq4kFsFCHLoW8pL71XtHENV7fmfz6/2br5rk8STPbLY/k+T9m58fT/KxWuvLtdavJnk+ybtHLTWrcUrHRKdmfIcuBndOYtE0hn6i0fr5dvkTnNY+zWE5xKI2LLnzDWMQi2AZ1taXHHQXs1LKfaWUO0leSvJsrfVTSd5Ua30xSTbf37h5+CNJfmPr6S9stgEN2LfC/zF3ABiLWDSvVhvAfeWWKOJQYhGwBGIRzOuUtZCXatAi1ZuhhzdLKb8/yY+XUv7wNQ8vV73Eax5UylNJnkqS1+fBIcUAjnQ5CA1J8Czx01exaFw9TO88dH2zlt4b85kiFiV9x6OrHDP1+eJ50AOxCBjboBFEF2qt/zHJzyR5X5KvlVIeTpLN95c2D3shyVu2nvbmJHeveK2P1Fofq7U+dn8eOKLo95zaCdCJYM12jYxofcTEEmMRy9NyHacNY8aizeuJRyfSr6NHYhEwliF3MfuuTVY6pZTfl+SPJ/mVJJ9M8uTmYU8m+cTm508meaKU8kAp5W1JHk3y6bELDuy2xnVlxKJxtXTsz8l+YR+x6LyWvDYezEksgnmNcbOsJRoyxezhJM+UUu7LvYTSx2utP1FK+bkkHy+lfCDJryf5oSSptX6+lPLxJF9I8vUkPzL16viGIMMrDj0XGppWs/hYxHIstdFlFcSihWmkDZvUdsxbwv5YQhk6IBYBo9ubIKq1fjbJ91yx/d8nec+O53woyYdOLh1wFi0kicQiYAnEovPal+xdets1tV3TyC/0vn/WTCwCpnDQGkRLdmgDqMFchlOOg2P4WkZNALAWkkO7LXkqec/HBejHWmPdoLuYtWLoVLO1HkyAoY6dmgswtdZj067yj9X/HHMqubYAgG2rShAlkj8tujhmQzsojvHVxlgozb5ln1bqiIseaE/ra+jtK/8YU7+OjWvnSBJd955MewN4raW1Y8mKppjRviEnx9JOIGiZ8wlgHMckt87tuv956pT/q55/MQ3u8v/dtR2gNWvsS0sQsSi7Ohm7tgOnWfMtpI8pb2vvEdbilJExc1tCGcZwaF/ruscP3Sdr2XcAa7G6KWasg4u0w506RNw+n95Un96eal/d6aVu9PI+YWkkCYY5137ajoXHTA1rfaogwCFOvQZbWgyUIAKY2NA7zcydJFqjoWucrfX9A9Na00XBVc5Vvhb2BUAPTDEDmNAhFw8+RZ+O6asA09OOARxuSbFTgghW5NgLXRfIy7GkBmKNLhJCEkNAa9Yes7R/APOTIIKVObQDufYO55x0dgEAgFZIEMEKSfq0TWJpmbZvzewWzUBr9A0AprGm+GqRalipU+9CAtxzXSLIuQWnO/UOMD05dl+JTwAMYQQRdMCaK3Aci4wD1zmlXT3XuoHafgCGkiACgCtI+MD5tHyThTnKMPRDnyXsHwDaIUEEsDA69O2SVILj9TQyZqyyX5UomnPU8BwjqgCWYC3xT4IIAC6R6IF5DO0k73vcuReTPyQhM8WFwJKmkh9ThiWUG+BUa4h/FqkGmMgxi4kurZEAOLdjb7KwK96eczH56+K++A7A0kkQAUzI3XkAjjc0qTI0zt6+e+csSaLeXeyDIcfF/gLWZGjff6mxzxQzgIkNXUh0qQ0FwJIdmoSXtD+f69o17R6wVvvi25JjnxFEAGew69PUJTcQAGt1jpFE3GM/A71qMf5JEAGcUYsNRY9MDYQ2nHKeShLBeu2LDc59uJopZgBwhTXciQIAejMkcXzOuxxCS4wgAoARSA4BwLwkfRjKHSevZgQRAOwwdBHV3jsTADC3Y5JDEkr92Td6rPfRZUYQAcAeFhkHAGjbIYmfi8f21teTIAKAgXrrJABACyxYzz7H1pHe6ocpZgAAAMAqnTplrKcpZxJEAAA06ZRPdXv6RBgAhpAgAgCgK5JDAByil1FEEkQAADRLsgcAxmGRagAAmrbrToO7HgfAq4mf+/WwYLUEETTArbUBYL/t9rHXWxRDj27duHn0FCAxYtj0KTG1DxJEsGC7gvVSAvTl8t338EwFAU4mEc3aqMP9uu5iV71Yr2OSROrD4Wvr9DCKpmfWIIIFun33zkGZ/HMbWj5g+Xadz85zoEX74pa4Bpxi7TFEgggW5pgs/jmtPShCT4Ymop33QAuGxioxbb1u3bg5eHSLUTDHnwvOofWSIIIVOFeQ1hjAejifgTVZ+gdsnNd1yZ9DkkjQG2sQAYPoSMF6HHM+W3MAWKpTRkGIa+vl2HLhlEXMe2MEESzIKYFL0AOAfpkOChzi1Hgh3qyTEUQAwCA+bYdl2bXA/AXnK8A9Y40iWntcHTyCqJRyXynlX5ZSfmLz+0OllGdLKV/ZfH/D1mM/WEp5vpTypVLKrSkKDvRJLAKWQCxiTofc7XTtn/L3PgpCLOJYpyY6WkyUtFjmcztkitlfSvLFrd+fTvJcrfXRJM9tfk8p5R1JnkjyziTvS/JjpZT7xikugFgELIJYRDNaT4JwLbEIDnBKkqiHBNOgBFEp5c1J/mSSv7W1+fEkz2x+fibJ+7e2f6zW+nKt9atJnk/y7nGKC/RMLAKWQCxiTm5L/Wo9joK4IBbBcVo+76c2dATR30zyV5P8161tb6q1vpgkm+9v3Gx/JMlvbD3uhc02gFOJRTAjHapvEouYxVqTPBxNLOIkx7bra+gPHPoe1vCeh9ibICql/KkkL9VaPzPwNcsV2+oVr/tUKeUXSym/+F/y8sCXhnUz5HE3sQjGs/Z4MaWpYtHmtcUjYBCxiLmsqQ9x68bNve9nyGPWZMhdzL4vyZ8upfxgktcn+Y5Syt9N8rVSysO11hdLKQ8neWnz+BeSvGXr+W9Ocvfyi9ZaP5LkI0nyHeWhK4MTsBxjrfx/ArEIZrSkztHlWHTmsk0SixLxCI51bB9lSXHtCGIRo7g4D4acQ42fMzut9X0dY+8IolrrB2utb661vjX3Fjb7Z7XWP5vkk0me3DzsySSf2Pz8ySRPlFIeKKW8LcmjST49eslhpY4JUD0ENbEIxnVI3FhKjNl1R6Zz3qlJLAKWQCxibENG0rB+Q0YQ7fLhJB8vpXwgya8n+aEkqbV+vpTy8SRfSPL1JD9Sa/3GySWFjhzySdg5g/UCRhFdRSzqzMyjR1ZlyKeGS9m/Q2/pnST3PTx1aa40eSy6eH9LOSawJIf2UVZ8HukXcbQVnxcMVGqdf9Tgd5SH6veW98xdDFikXZ2duQP4VeW67+HnP1NrfWyG4oxCLFq2fR3/uc8JpnNoYrr1WJS8Eo/Ue7ad+iFND/VlSefMp+pz+a36H65a+6cZ+kbQvkNi0SkjiIAzWGpn7upyPX/2crB+Qy+IjK5YpwWOWjyLt7/rd3P79vBRU+p9HxY6kndRnAsAx5MgAgCAI2wna5aemFh6+QCY395FqgFgLsd8Uu7TdXqk3p/PxaLolwuIV+kAACAASURBVPf5ru1jk+gBYCoSRAAAKyBJNL1Dp7xO5dAkkaQSAENIEAEAwB6HJn2WkCS6deOm5BAAg1mDCAAAGrSd/LFgOQCnMoIIAACucexooHNO+zNaCIBTSRABAIvlghcA4DwkiAAAAAA6J0EEwGIdM3rEiJP1OeSYOv6M7dRpYu4uB0ArLFINwKLdunFz8AWW5MB6XbUY71V/65n9AACcQoIIgMUbkiRycdwPx/q17JPpHJKk3vV8AGiBBFEHdnVqeu6wbO+TnvcDtOTiXDV6BF7NOQAAjEGCaMX2fdp18fdeOpa79kdv+wFa51ylB1/+7INGzgEAZyVBtFKHDIW+fffO6juYQ/aHRBEAS3PV2kvaqfM7dpqZYwVASySIVuiYDsyak0SH7o817wsA2qVtmtehSSLHC5jSdfFI/OFYbnPPN63xNqzHvqc17gsA4DRDL7pcnAFTGrqUCBxKgggAAAbal/yRHAKmNDT5I0nEMUwxY7VODYqmmgEAV9E/AOZg6QymZgTRyoyRFAEAAGA5LJ3BORhBBEfYFWhl6KFtFnwEAKBXEkRwje1hmUOy725BDO0auuCj8xsAgDUyxWxlTr1wceHzWrfv3jlqvi/QjkPOWec3AHBOlhHhXCSIYCICMbTBuQoAABJEbFnb6KElvB8XnrBOc57bF6Mat78AgPUyS4RtU/b/rEG0Qrdu3HTBADBAS7HyurJaHwkAYL2u6gdubxurDyhBtFKHJonWelEhWQaswdA4tr2wPgD0wh2GWatz9wFNMVuxIRXk1o2bqw+ch76/i30y1n6RoAIAgGnsG2G7lr74sdcma7/WW7M5bpRkBNHKCQj3XN4PQ4fjGYEEzO2YzoHYT+uMBgD2OeYOpK3HELNE2OfUfqARRHRp7FFCQJuWHgOOTVBLbNOyXkYDAMfrOQ4M7bssvY/D9U6p46c8V4IIJiY4A8B+hyR/er44BI63ltix7/rC9QfHMsUMgK4dM5VUxwvmZzol9GktSZ5TiX9MwQgi2OOU4Ctww/o4r2F8plMCwPwkiGAAF4SwbkPXJBMLYHySPMA5iTmwmylmMJC7BsD6XZy3l8/1Xs/nq2Jer/sCaI+74QEcRoIIDjAkSaTTAe1bwnk89yecu/7/Wm4VDKzbvrvhJeJYrxx32E2CCA603ahsdz40NsCSHLuA76F3kRL7gCU5JLluoXNgqY65icr2c48lQcROkh/72S/AFMYaPXRoEmfuUUsA5yZJ1J5TLpxh7U6NZ4MSRKWUX0vy20m+keTrtdbHSikPJfmHSd6a5NeS/Jla629uHv/BJB/YPP4v1lpvn1RKzmLIUNxEUoT5iEWs3VQd3ik70j1eXIlFsEyn3A2vxTjWcyw6NknU4nGmX3OsgXvIXcz+l1rrzVrrY5vfn07yXK310STPbX5PKeUdSZ5I8s4k70vyY6WU+04uKZM6dDguzEgsYpXE1uaIRSNxwQYnEYsGEmto0bnvtHvKbe4fT/LM5udnkrx/a/vHaq0v11q/muT5JO8+4f8wsWMuSlzIsCBiEbAEYtEMXPDBa3QTi4ZeOF88Flp2Ud+36/JV2041NEFUk/zTUspnSilPbba9qdb6YpJsvr9xs/2RJL+x9dwXNttYGUkiZiAWsUriaXPEopG5eONUp8bRRuOwWJTr48fYF8+wBFPW66GLVH9frfVuKeWNSZ4tpfzKNY8tV2yrr3nQvSD2VJK8Pg8OLAZja7QxpF9iEbAEo8eiRDyaY60FaJxYtCEewDgGjSCqtd7dfH8pyY/n3nDEr5VSHk6SzfeXNg9/Iclbtp7+5iR3r3jNj9RaH6u1PnZ/Hjj+HQDdEItYI4n69kwRizav1308GrrOgotBLju1TrRYp8QiYGx7E0SllG8tpXz7xc9J/kSSzyX5ZJInNw97MsknNj9/MskTpZQHSilvS/Jokk+PXXCWwYUN5yIWAUsgFk3vXOssQMvEImAKQ6aYvSnJj5dSLh7/92utP1VK+YUkHy+lfCDJryf5oSSptX6+lPLxJF9I8vUkP1Jr/cYkpQd6IhaxOmtIsnd4wS4WnVGH9QuGEouA0e1NENVafzXJd1+x/d8nec+O53woyYdOLh3AhlgELIFYBOvTYiJSLAKmUGq9cm2y8xailH+b5D8l+Xdzl+VIfyDKPpeWy7/Gsv93tdbvOndhxiIWzarlsidtl7/lsidXl7/pWJQkpZTfTvKluctxpDXWqVYo+3zEouVZY51qhbLP56RYtIgEUZKUUn6x1vrY3OU4hrLPp+XyK/sytfzelH0+LZe/5bIn7Zd/l5bfV8tlT9ouv7LPp/Xy79Ly+2q57Enb5Vf2+Zxa/kF3MQMAAABgvSSIAAAAADq3pATRR+YuwAmUfT4tl1/Zl6nl96bs82m5/C2XPWm//Lu0/L5aLnvSdvmVfT6tl3+Xlt9Xy2VP2i6/ss/npPIvZg0iAAAAAOaxpBFEAAAAAMxAgggAAACgc7MniEop7yulfKmU8nwp5em5y3OVUsrfKaW8VEr53Na2h0opz5ZSvrL5/oatv31w836+VEq5NU+pv1mWt5RS/nkp5YullM+XUv7SZvviy19KeX0p5dOllF/elP2vt1L2rfLcV0r5l6WUn9j83lLZf62U8q9KKXdKKb+42dZM+Q8lFk1LLJqXWNQOsWhaYtG8xKJ2iEXTEovmJRZdo9Y621eS+5L86yT/fZJvSfLLSd4xZ5l2lPN/TvJHknxua9v/neTpzc9PJ/m/Nj+/Y/M+Hkjyts37u2/Gsj+c5I9sfv72JF/elHHx5U9Sknzb5uf7k3wqyR9roexb7+F/T/L3k/xES/VmU6ZfS/IHLm1rpvwHvlexaPqyi0Xz1h2xqIEvsegsZReL5q07YlEDX2LRWcouFs1bd8SiHV9zjyB6d5Lna62/Wmv9vSQfS/L4zGV6jVrrzyb5D5c2P57kmc3PzyR5/9b2j9VaX661fjXJ87n3PmdRa32x1vpLm59/O8kXkzySBspf7/mdza/3b75qGih7kpRS3pzkTyb5W1ubmyj7NVov/y5i0cTEIrFoZK2XfxexaGJikVg0stbLv4tYNDGxSCwa2WjlnztB9EiS39j6/YXNtha8qdb6YnLvBE/yxs32xb6nUspbk3xP7mV5myj/ZvjfnSQvJXm21tpM2ZP8zSR/Ncl/3drWStmTe4H+n5ZSPlNKeWqzraXyH6Ll8jd3TMSisxOL2tFy+Zs7JmLR2YlF7Wi5/M0dE7Ho7MSia7xu5MIeqlyxrZ69FONa5HsqpXxbkn+c5C/XWn+rlKuKee+hV2ybrfy11m8kuVlK+f1JfryU8oevefhiyl5K+VNJXqq1fqaU8v1DnnLFtrnrzffVWu+WUt6Y5NlSyq9c89gllv8QrZf/Kot8T2LReYlFSeYv/yFaL/9VFvmexKLzEouSzF/+Q7Re/qss8j2JReclFiXZU/65RxC9kOQtW7+/OcndmcpyqK+VUh5Oks33lzbbF/eeSin3517g+Xu11n+y2dxM+ZOk1vofk/xMkveljbJ/X5I/XUr5tdwblvsDpZS/mzbKniSptd7dfH8pyY/n3nDEZsp/oJbL38wxEYtmIRYtoN4coOXyN3NMxKJZiEULqDcHaLn8zRwTsWgWYtGe8s+dIPqFJI+WUt5WSvmWJE8k+eTMZRrqk0me3Pz8ZJJPbG1/opTyQCnlbUkeTfLpGcqXJCn30tB/O8kXa61/Y+tPiy9/KeW7NlnplFJ+X5I/nuRX0kDZa60frLW+udb61tyr1/+s1vpn00DZk6SU8q2llG+/+DnJn0jyuTRS/iOIRRMTi8SiY4hFYtHYxCKx6BhikVg0NrFILDrGWWJRnXEF7npvZe0fzL1V2/91kr82d3l2lPEfJHkxyX/JvSzcB5J8Z5Lnknxl8/2hrcf/tc37+VKS/3Xmsv9PuTeM7LNJ7my+frCF8id5V5J/uSn755L8n5vtiy/7pffx/Xllhfwmyp57d6345c3X5y/OzVbKf+R7FoumLbtYNH/9EYsa+BKLJi+7WDR//RGLGvgSiyYvu1g0f/0Ri674KpsnAQAAANCpuaeYAQAAADAzCSIAAACAzkkQAQAAAHROgggAAACgcxJEAAAAAJ2TIAIAAADonAQRAAAAQOckiAAAAAA6J0EEAAAA0DkJIgAAAIDOSRABAAAAdE6CCAAAAKBzEkQAAAAAnZMgAgAAAOicBBEAAABA5ySIAAAAADonQQQAAADQOQkiAAAAgM5JEAEAAAB0ToIIAAAAoHMSRAAAAACdkyACAAAA6JwEEQAAAEDnJIgAAAAAOidBBAAAANA5CSIAAACAzkkQAQAAAHROgggAAACgcxJEAAAAAJ2TIAIAAADonAQRAAAAQOckiAAAAAA6J0EEAAAA0DkJIgAAAIDOSRABAAAAdE6CCAAAAKBzEkQAAAAAnZMgAgAAAOicBBEAAABA5ySIAAAAADonQQQAAADQOQkiAAAAgM5JEAEAAAB0ToIIAAAAoHMSRAAAAACdkyACAAAA6JwEEQAAAEDnJIgAAAAAOidBBAAAANA5CSIAAACAzkkQAQAAAHROgggAAACgcxJEAAAAAJ2TIAIAAADonAQRAAAAQOckiAAAAAA6J0EEAAAA0DkJIgAAAIDOSRABAAAAdE6CCAAAAKBzEkQAAAAAnZMgAgAAAOicBBEAAABA5ySIAAAAADonQQQAAADQOQkiAAAAgM5JEAEAAAB0ToIIAAAAoHMSRAAAAACdkyACAAAA6JwEEQAAAEDnJIgAAAAAOidBBAAAANA5CSIAAACAzkkQAQAAAHROgggAAACgcxJEAAAAAJ2TIAIAAADonAQRAAAAQOckiAAAAAA6J0EEAAAA0DkJIgAAAIDOSRABAAAAdE6CCAAAAKBzEkQAAAAAnZMgAgAAAOicBBEAAABA5ySIAAAAADonQQQAAADQOQkiAAAAgM5JEAEAAAB0ToIIAAAAoHMSRAAAAACdkyACAAAA6JwEEQAAAEDnJIgAAAAAOidBBAAAANA5CSIAAACAzkkQAQAAAHROgggAAACgcxJEAAAAAJ2TIAIAAADonAQRAAAAQOckiAAAAAA6J0EEAAAA0DkJIgAAAIDOSRABAAAAdE6CCAAAAKBzEkQAAAAAnZMgAgAAAOicBBEAAABA5ySIAAAAADonQQQAAADQOQkiAAAAgM5JEAEAAAB0ToIIAAAAoHMSRAAAAACdkyACAAAA6JwEEQAAAEDnJIgAAAAAOidBBAAAANC5yRJEpZT3lVK+VEp5vpTy9FT/B+A6YhGwBGIRsARiEXCdUmsd/0VLuS/Jl5O8N8kLSX4hyQ/XWr8w+j8D2EEsApZALAKWQCwC9plqBNG7kzxfa/3VWuvvJflYkscn+l8Au4hFwBKIRcASiEXAtV430es+kuQ3tn5/Icn37nrwt5QH6uvzrRMVZR5vf9fvHvW8L3/2wZFLAsc5pg5/5rMv/7ta63dNUJxjHRSL/sBD99W3vuX+k/6hcxjm99v5zaZjUbLOvhF9ObYvnKynLf3P+U/5vfpymbscW8QiOMB1caylOHVILJoqQXTVP3/VXLZSylNJnkqS1+fBfG95z0RFOb/bd+8k+c6jn3/rxs3xCgNHun37zsHPue/h5//NBEU5xUGx6A8+8rp8+vZbTvqHzl+Y30/Xf9RcLErW3TeiP8f0Iy6spS39VH1u7iJcJhbBAa6LYy3FqUNi0VRTzF5Isn2V9eYkd7cfUGv9SK31sVrrY/fngYmKAXTuoFj0Xd9530n/rKWGAjirvbEo0TcCJicWwUjuDQpZn6kSRL+Q5NFSyttKKd+S5Ikkn5zofwHsIhYBSyAW0ZVTL5zWeuG1AGIRHOC6D3/X+sHwJAmiWuvXk/yFJLeTfDHJx2utn5/ifwHTWEPQO2csWsP+AqahXwQsgVgE7DPVGkSptf5kkp+c6vUBhhCLgCUQi+jJrRs3TxoF5EOX6YhFMFyPoxmnmmIGrIAO2jD2EwAA0DoJIuBakh/Xs38AAKAfa+7/SxBN4JQKs+bKRrtu3bi5d5G2Hutuj+8ZAIY4to3UtgJLsGt62dpj1GRrEPXumLnXa69sLRtyLHs4fj28xyHsBwAYn/YVWIJek0OJBNGkDkkS9VDZWjX0GN6+e8dxXDnHFwCGu2g3fdAGtOTiOr7HuCRBNLEhSaIeK14rDh0F1msgWYsvf/ZBxw8ARnZdf1i7CyxRr7FJgugMdn160mulAwCgL/q9AMsnQXRGGsa2HDp6aPt5jjUAAAAtcRczAAAAgM5JEMEVjh09NNbzAQAA4JwkiAAAAAA6J0EEAAAA0DkJIgAAAIDOSRDBFU69C5m7mAEAANASCSIAAACAzkkQwQ7HjgIyeggAAIDWSBDBNQ5N9kgOAQAA0CIJIhiJ5BAAAACtkiCCPW7duLk3+SM5BAAAQMteN3cBoBWSQAAAAKyVEUQAAAAAnTOCCACY1e27d3b+zehNAFi223fvaK9XQoIIVmj7YkuwBpbqusTQ5ceIZQCwDFe135e3abfbJEEEK7IvWAvUwFIMSQ4BAMtxSNttVFGbrEEEK3D77p2DPokHaI34BQBt0Xa3R4IIGndo4BWogSW46lNFnzQCwDIdew3h2uM0595/pphBhwz5BJZgSJJou2MkdgEAa3c5KXTO9Z2MIIKGycj36WJK4dCphdAyCSEAgFdM2f+XIIJOSSy0Z1dCSKKItZMkAgB6MaTfM1XfX4IIGiUh0A+LkIMkEQDM5dQ+pj7qNKbYrxJEACuiAWbNJIkA4PxObX+13+2QIAJYsGMSPpJEAACwfmP3+yWIoFEy8QAAAIzFbe4BAICT7PoU2wdatOC6URjq8Gnsv7ZIEG3RsNET9boNu46TaWTAnLZjkPaE69qki7+pJyzVvj7V7bt31N/cO4f1P89jzv1siln23yHILaRZKo1Vv27duOn4A7PZjkH6Sf065NirIyyR+nuYQ/ue+qrt6T5BdMjJLjCwRMcEXsF6PRxLYE7bMUg/iX1aryMXCbHLX7Tp0GPnWN8zpO/pg8zjDalnF/t3iv3cdYLI3YFYi0MCg2C9Po4pMCdJoj4de6xbrSNmG6xLb/V3bFclKKZKWPRkaHJoSnsTRKWUv1NKeamU8rmtbQ+VUp4tpXxl8/0NW3/7YCnl+VLKl0opt6Yq+JwEBpZoX0BuPWCLRcO1fJyXZNcnxdoAxKPXEnf60lMcXPI0OrGIpdAGnG5f/DjXtdyQEUQfTfK+S9ueTvJcrfXRJM9tfk8p5R1Jnkjyzs1zfqyUct9opR1RTw0bfbmc0W89MbTlo1lhLBrLSo7xYgxZsJKufTTi0U7OD3p25vr/0YhFsApL6cvvTRDVWn82yX+4tPnxJM9sfn4myfu3tn+s1vpyrfWrSZ5P8u6Rygp0TCwaZimNS8uW+kkxyyEewWlaiZ9Ln4YkFh2nlfpHf3b148/Zvz/2NvdvqrW+mCS11hdLKW/cbH8kyc9vPe6FzbbVGeN2h0OGkY1t1/90UUmjuo9F25zHpztmwUr7nY3u45FbILMmDdfl7mPRGLTtzGXuundsgmiXcsW2euUDS3kqyVNJ8vo8OHIxlm9Io3PxmDEqydDpEnNXSBiJWAQshXgEl+hvzkIs2tiXzFY/6dmxdzH7Winl4STZfH9ps/2FJG/Zetybk9y96gVqrR+ptT5Wa33s/jxwZDHadO5bKh7y/IY/LaFPYhGjWfpUAhZPPAK+aca2QSw6geQQvTs2QfTJJE9ufn4yySe2tj9RSnmglPK2JI8m+fRpRVymY4PHuRuLY/6fix0a0n0sAl5txjas+3ik/9APF9GL1n0sOpZ6DcNuc/8Pkvxckj9USnmhlPKBJB9O8t5SyleSvHfze2qtn0/y8SRfSPJTSX6k1vqNqQp/itYCgEQPvVtrLALGc652Tzy6Xmt9LM6rl/pxjve51lh0jljeSz2EQ+1dg6jW+sM7/vSeHY//UJIPnVKopWtl9NApLLzK0ohFwFKIR6/VUh+HcViUfH5rjEVz1SnXPXDPsVPMVqG1QKARBpjOsW1Ca20JwFgOjX8txcuWyrpGRhHBPLpOECXrbdgkkwDoiXZvPtv7vpV+EuMZcsxv3bjZVd3o6b2ObXvfSRLB+Y19m/smDRkiK3gwpsv1Tf2CZTh0yoRzl55JDHFh10V96/XCNLr5HbrsxTHLZLReT2FMEkQbLQSGFsrIbtd1MNbUmYLWDb0gcK4ug4u3+TgHuMra6sXF+9EuzMcHN3A+3U8xWyvBcVkOadhc7MD89sVQMXZ+t+/eES+Bs7ku7vc2hW5q1gSE+RhBdEYtDVMVYMdzzDF3FzmYn3NwWVppP4H10i6cT0vXTbAmRhA14pgGSSMGAAC0aOi1jBFcMB4JojNrIdEjwI5nyOLnuxo1n5oAAL25mD6qH0SyP/njugXGZYrZDA4ZMnlq0HNHnuXZtY8PWQQRoDemG8B67Tq3L7brn6IOwHkYQTSTIdnwsQLh0NcSeMd1VWdn6HGQLAJ4Le0UrM+Qvo4RRQDnYQTRzM7Z2b0q6aCzfT6H7muflgO8ltgI63HouewmHgDTWlWCSOJjGPvm/OxzgPHsGmX5Sqx9/swlAg4l0QuwPM0niPbNWb7gAp25nFL31FuA3cRIaNMpySGjiACm0/QaRIc0Lj6lAAAAALhaswmiYxI+kkScm0+4AABeMUZ/XJ8eYBpNTjHTKNACySEAOK9dfURt8jLowwMsW7MjiI6lYQIAWJd9t0HX/wOA/bpLEAEAsB5Dkz/7kkhMa8x9b0QYwDSaSxBp2AEAoB367wBtaC5BBAAAiZuWtMD+BmiHBBEAAM05JfEgaXEeU+xn08sAptNcgkijAAAA/XEdADCt5hJEp9KwAABAW/ThAab3urkLcIxbN24aGkyS3UOXdSIYw3VxRh0DeqTdZQ7qF8B5NJkgOpbGZT32JQgv/u6Ycyx1DODVrouLYiKX+TAXoD3NTjE7tAOiw7Ieh3Q4dE44hjoG8Irbd+8MjnViImPThwc4n2YTRMm9BmNIo6FhWQ+3s2Vq6gtAG07p3+kbTs8+BmjPKqaYXTRA2xd2GiXgXG7fvSPmzGhfUs+xgeMd+8GM844xqEcA59X0CKLLLkYUaUzW6ZSRHUaFMMTb3/W7cxeBAw05t53/cJwW2t1j+nz6iW1wnADOb1UJIgD6Ya0o4FCSDgCwmwQRAM2xHhlwwZqU6+NYAcxjFWsQsX4u7GAeS1zfRzwAriKpsDy3btw8OGY7jgDzMYIIYOPLn31w7iIsxtDbWreWrGmtvAA9kRwCmJcEEYvngg6W7ZznqHgAABxi6IdegAQRCzdWMPeJFEO5I471fYB7Tolta4uLHEfbwNy266D6CPtZg4hFEsBphYug8xEXAIBTXPQl9N/gakYQsShTDAHVAHConu+IIwkDbDOqknPSBjEm9QkOJ0HEYkwRxHVSOcWuRNHQBBLAGoh3HMPFOUumfsLVTDFjESSHWDJ1aT0cSzjOkNuVO7+AJRh6XXH77h1xCy7ZmyAqpbwlyf+b5L9N8l+TfKTW+v+UUh5K8g+TvDXJryX5M7XW39w854NJPpDkG0n+Yq319iSlhx0E+/URi4Al6DkWbbet1vHgOqd88OeifZi5YtGuYzv3MTMiCMYxZATR15P8lVrrL5VSvj3JZ0opzyb580meq7V+uJTydJKnk/xoKeUdSZ5I8s4kN5L8dCnl7bXWb0zzFmidO5UxkFh0BkNGCUDnxKJoc2EBzhaLhvQL5kga66/A+PauQVRrfbHW+kubn387yReTPJLk8STPbB72TJL3b35+PMnHaq0v11q/muT5JO8eu+CwTUd1/cSiZXMO0guxCFiCc8Wit7/rdw8ql6QNtO2gNYhKKW9N8j1JPpXkTbXWF5N7AaqU8sbNwx5J8vNbT3ths+3yaz2V5KkkeX0ePLTcrIRGhGOIRa921Xl0SsJm1yiiXa/ZynksicXYxoxFm9drPh4B5zdlLPqDjxy+ZO25pgleN+r5qv8/RX9lqVPu4FiDz/hSyrcl+cdJ/nKt9bdKKTsfesW2+poNtX4kyUeS5DvKQ6/5OwwlAPdFLHrFdR2dU4d6b3e69r2Gc5AejR2LkrbjETCPqWPRY9/9+qZi0XV9kou/jZEo2vca1tKiVYNuc19KuT/3As/fq7X+k83mr5VSHt78/eEkL222v5DkLVtPf3OSu+MUF+iZWPSKQ+7QcaxbN24uqnNz6qgoGItYBCzBkmPRHKOLh7b1F487tm9wSB+slVHWcGFvgqjcS0P/7SRfrLX+ja0/fTLJk5ufn0zyia3tT5RSHiilvC3Jo0k+PV6RWRMXbQwlFr3i0M6GzgmMRyyC/ST0pycW3XNssmfq5BC0asgIou9L8ueS/EAp5c7m6weTfDjJe0spX0ny3s3vqbV+PsnHk3whyU8l+ZHW79TBculEdEUsio7JMee8OMHIxCIYQLyenFi0ca56c2wfrPe+G23ZuwZRrfVf5Oo5q0nynh3P+VCSD51QLoBXEYtOs6a58NctSnn5cTA2sQhYArGoLWvqh7Fug9Yggimdsogu0Kfr1kda2tpJAL06ZE0YcRtgfofftxAmMHREwPbjAcQCgGXbd+cocZwWmCZGLySIWAzTRmBahjcDMBftT18cb2iTBBGLst2YbCeLNDIwDkkiAGBKa+xnHDrbAVolQcRirbFxAQCAVnz5sw/OXQRYrYuk45Kuey1SDdCQMRqQqT8B8wkbAKyHxcZPZ79w4fbdO9/8um7bXCSIADokSQQADLUv+dNDAqSH98i0hvSP504UmWIG0Jix5sFPsR6RxBAArJckyeF63WfuXPhqh/aR51o31AgigAaN1WCMmdCRHAIA1uzQ/lePyZB9I2B67C+29J4liAAadY5Ox9Bhri01fAAAxxq61lKvyaGhOMwjwQAAIABJREFUj9N3XCZTzGCH64JWjwGfvm2fD271CgD0bvt6YK7pQK3rYb+d0meeY/80nSDat7PXXtkY3yFZ7yHUQaY2RrLm0MZHcggA4BX6/Mf3D3tIErWkySlmpjwwhSnqi+GTnMOUjaoGGwCA67jeWY/mEkTHrP4N+7jlNz2bIgkksQQAwBCulXY7975pLkF0DBWO66gfcD3JHgAAWL+mEkQu5GmZ+suUpk7iHPL6EkoAABzCtdIyNL1I9SEsfsUul+9AAD05NPHj7n4AAExhjf3MsW4oc/FaU2smQeTCnXOYKlnUakCjLYc2QMfUS3UZAIBz2+7jjtkfPUfyZYwkUbL7+nTMsjeTIIJzuzjRjjmZXUQzl6ENkDoKAKzJOS6eudpYCZChTknq7Crn5e0t1ZsxZ0s1tQYRzOHQk62lYMI63bpxc2c9vO5vAAAtui45cfvuHbNRVmrKO5yPXWem7oOPVd5mRhCdOysJ24aMJnLRzdKokwDAmh1zwa9/NI25rteHHNdjyzVFnTlllso+Y4wkMoIIDnDdqAwAAOA8DB5YnjmviYZOHRvztU9xMaLo8tepTi1rNwkiF/CM5fLJq24BAEAbJJamNedyBpenE455rM9Vb+a+tmxmillimhnLMvfJCwAAPXJNuHxXXSud67ipH8drbgSR2zIDAABAW9ws5TxOSZA1lyBKDkv4qIAAAABcMMJkXq7Rl6vJBFGyP/soOwkAAACMoZXE4il5kKbWILqKJBAAAABDuYacn/WFd5tz3zQ7ggiYl4AOAACwHhJEwMEukkOSRADM4fKtjIG+GAG0Dq0dx3OW99j/dWoZm59iBpzX5Q757bt3mgvuALRlVzJoe7u2CPpy7DQcsWJZTDUbzxh12wgiYHBQFrwBOLdD2ijtFHAdyaFlclyudsiNt8bahxJEQJL9HfDr/q5DDsAUtC/Adea4gGYaYx6fi3ox9mvOZd//HrNsq5xidl1nQmCA3XTEAViKY9skU58PN8Y+uzhe9j1zuG6akjrZjjGmm10+3muZwnauery6BNGQURCCBADAeunvHe6UBM8aLr5on3N+HS6O45jrS52SJOqtXq1qipl1VNbjYh0B6wkAAJzPIf2uq/pp+m3AGA5JzAyZTnbMlLPekkPJikYQHdoY+WRpmfbdpcQxWybHBQDadFXfa9/d4SSBgHPYjj9XxZ1jrkGGjFDq+dpmFQkic9TXYchxdMwAAM7nmH62/howtrFjypQxquXBDXunmJVSXl9K+XQp5ZdLKZ8vpfz1zfaHSinPllK+svn+hq3nfLCU8nwp5UullFtTvgHW4dDhzIzrlOB1rsAnFgFLIBYBSyAWwfJcnnbb4rIpQ9YgejnJD9RavzvJzSTvK6X8sSRPJ3mu1vpokuc2v6eU8o4kTyR5Z5L3JfmxUsp9UxQ+OT1Z0MqBWrNjP5liXKcM0TyTRcei1rXUcMHMxCJWQ9xvmlgECzG0H91Cf3vvFLNaa03yO5tf79981SSPJ/n+zfZnkvxMkh/dbP9YrfXlJF8tpTyf5N1Jfm7MgrMOp5wghi+P75AV/s+978WiaSy9kRqLeeaMRSxqg/OatROLYBnW1pcedBezUsp9pZQ7SV5K8myt9VNJ3lRrfTFJNt/fuHn4I0l+Y+vpL2y2AQ3Yt8L/MXcAGItYxDH2Ndxra9iZnljE/9/e/cXKdp51gv69bRuHQCLiJo58bKvjlsxoEsQcGCtBSqtFE+C4AeFopIzcEiNfRPJNRgPqGTH2ILXERaR0j4S4yoUFCEv88VhAFCvq4eAYEGqJiWOTkxAnMTEkk1jHymlIowRaYxLzzcWuHSrHtfeuql1V68/3PNJW1V67qva7qla9tdavvrUWjIFeBMM6z7GQx2qtg1S31l5JcrGqvivJB6vqe0+5ea16iFfdqOrBJA8myWvy2nXKALZ0fRNaJ+AZ47evetFunXTmmjG+9tsa8wcw07WPXpT03Y9W2WRU6/X3gx7oRcCurTWC6Fhr7W9yNEzx3iRfrqrbkmRxeW1xsxeT3Ll0tzuSXF3xWI+01u5prd1zU27eovQj510JsBLBnJ20n+sU9n89zRh7EeMz5WWcadhlL1o8nn50Ttbr6JFeBOzKOmcxe+MilU5VfXuSH0ny2SRPJHlgcbMHknxocf2JJPdX1c1VdVeSu5M8vevCgbOdtaI8pQ1ovWi3Tnvtp7RcwKHpRYe1SeAjHKInehEMa64ny1pnF7Pbkjy6OMr9P0nyeGvtw1X1J0ker6r3JPlikncnSWvtuap6PMmnk3wjyXsXwx/3xhBk2N6EdikafS9iPMb6ocss6EUjM5HPsK54TQ5CLwJ2bp2zmH0yyfevmP7XSd55wn3el+R9564OOIgphER60eGMfVmAIelFh3VW2Ktfvdryc+b5mS+9CNiHjY5BNGabfgD6wByH87wOXkPYvV7fV0YcwfgIhzZ3/XM2RG/zugA9mGuvW+ssZlOx7q5mc30xAdZ1fb+cW188nh/BD0zP1N+3J9U/VJ89bZTwtodpAGCeZhUQJfPbyOnBphtyXuPNrLvyN4XdzNi9ub/my/N31vvg+O9zf05grDYNKsb2ubVuj0l232fW+d/7DolOm6c5fyEBsK2xfY4lM9rFjOlb580xtjcQTFlv76fe5hc4nG3CrUP/79Nud95d/lfd//LVK9/8WWc6wNTMcd1ydiOImLaTRhPN8c0HjI9eA8PYNiwYw7evQwUdu/6/uxzRvUloNfTrB8A/EhAxSlYWdmud4eOe8/3b17e37IbXAIZhJMl6DvU8nbRr7ro9cuq7CgJs4ry76Y6tB9rFDGDP1hlKbwPpME47BgfAps67UTB2x7uP7btHTuG5AOiBgAg6YQN4GJus9FpBPrxDbPgA9MLnGMDmxtQ7BUSADeQRGdMHxFwd6htxgF2ae8/y+QcwPAERdG7uK5xDsrILAABMhYAIYGQESwDsmi+EAPZjTv1VQASdWd69Zk7NDPZFYAf75bNofds+V55jANYhIIKOWEGEzRyHQ0IiYJXzfK4eKuzx2Q/AugREALDC9aHQ5atXBEWwJ1MeGTNEDeuOAh7D8wPAdAiIAEbGCv24rQqKjqcJkGB7PY2M2VXtq4KiIXcjH2JEFcAYzKX/3Th0AQAwNusEPcIg2L1LFy6u9d46a2V6+TEOseJ9/D92Uft5/v8YrPsaXn8fgKmbQ/8TEAHsyRw+JAAObbkPbhL0nNRvDxkWndb39XcAxk5ABLBH24REABxZN1RZt89evnrlICFR74YeUQUwlF2NhB2KYxAB7Nm6BxId6wcFwJhtGsIL7Q/ntM81n3vAXJ3V38bc+4wgAjiAk75NHfMHBMBcHWIkEUc8z0Cvptj/BEQABzTFD4oe2TUQpuE871MhEczXWb3Bex9Ws4sZAKywzcqjFU4AGNa6ZyL1RRC8mhFEALADwiEAGJbQh3U54+RqRhABwAnWPYhq7ysTADC0bcIhgVJ/zho91vvoMiOIAOAMDjIOADBtmwQ/x7ftbV1PQAQAa+ptJQEApsAB6znLtstIb8uHXcwAAACAWTrvLmM97XImIAIAYJLO861uT98IA8A6BEQAAHRFOATAJnoZRSQgAgBgsoQ9ALAbDlINAMCknXSmwZNuB8C30j/P1sMBqwVEMAFOrQ0AZ1v+fOz1FMXQo0sXLm69C5Aesd7uU3pqHwREMGInNeuxNOjr67vhtoEKAYDrDP0ZyXBO29i1XMzXNiGR5WHzY+v0MIqmZ45BBCO1SZJ/aJevXunmQG0AwHxYfwHOY+49REAEE3foJjX3pggATNtZoxusy8zXpQsX1x7dYhTM9u8F76H5EhDBDByqSfswAACmQEjUt9Ne/01CJOiNYxABa7EiBQDMiWOpzJvXlmPnOYh5b4wggpnQ9ACgX44P+GoCAjjZefuFfjNPawdEVXVDVX28qj68+P2Wqnqyqj63uHzD0m0frqoXqur5qrq0j8JhzjTck+lFwBjoRYzBcSi0vN6wahrzpRfBenYVGM89eN5kBNHPJPnM0u8PJXmqtXZ3kqcWv6eq3pLk/iRvTXJvkg9U1Q27KRdALwJGQS9iMOsGQIKis83g+dGL2Mp5g44pBiVTrPnQ1gqIquqOJD+R5JeXJt+X5NHF9UeTvGtp+mOttZdba59P8kKSt+2mXJi/Gayo7I1eBIyBXsTUWLeYJ70INneekKiHgGndEUS/lOTnkvzD0rQ3tdZeSpLF5a2L6bcn+dLS7V5cTAM4L70IGAO9iME4LfVuTXyDTy+CLUz8fb9XZwZEVfWTSa611p5d8zFrxbS24nEfrKpnquqZr+flNR8a5s3K28n0ImAM9tWLFo+tH3Eq6wkc04vYhW2DkjkELJvOwxzmeR3rnOb+HUl+qqp+PMlrkry+qn49yZer6rbW2ktVdVuSa4vbv5jkzqX735Hk6vUP2lp7JMkjSfL6umVlc4LenOcUjB00Lb0IGIO99KJEP4Jdm3mgphcxiDltcxzPy2m9Yk7zu44zA6LW2sNJHk6SqvqhJP9ba+2nq+r/TPJAkvcvLj+0uMsTSX6zqn4xyYUkdyd5evelA4e0qjkecsVLLwKOXd97DrnyphfBfEx5w08vYlfWCUmuv+3czHW+trHOCKKTvD/J41X1niRfTPLuJGmtPVdVjyf5dJJvJHlva+2Vc1cKndhmFNFQTW2TD5Q90ougEyf1muPpA6/g6UUwIjMfPXQavYitnLUNIkTpQ7U2/KjB19ct7e31zqHLgFFZd8VmTM36I+23n22t3TN0HdvSi6ZhyNEjDGeTjb0bbnth0r0oWd2PRhKEMaDzhh69LDtjGQnx0fZUvtq+surYP5Nh3Qimb5NedJ4RRMAenTU6p5eVPDg28tEj7FHHIwFWzvvyNMs9fKuz+oX3DMDJBEQwclZk6N264YCgaJ56DYe+5/v+ay5fPnveLfd9Oc/JLHrhvQCwPQERAJOyvPJvQwkY0pRGc429PgCGJyACYLTOGh2xKiy6fPWKDSG6Y7k/nLN2d032G8YYRQTAvvyToQsAgNOsu6Fl45jeCQ32b9NdXvdl036nPwKwDgERAKNlIwgYi01DnzGERJcuXNQXAVibXcwAAGCCVu1mKxACYFtGEAEwKzaOgF3bdjTQIXf7M1oIgPMSEAEAo2WDFwDgMAREAAAAAJ0TEAEAo7bJKCIjjti18+4m5uxyAEyFg1QDAKO36mC8q/7WM88DAHAeAiIAYFIEIa/mOdmfSxcunmsUkNcGgKkQEHXgpJWanldYlp+Tnp8HAKbP5xgAsAsCohk769uu47/3smJ50vPR2/MAwPj9+Sdfu9bIFZ9dAMCuCIhmapOh0JevXpn9CuY6z4egCICxWXXsJZ9Th7ftbmZeKwCmxFnMZmibFZg5n2Fj03mb83MBwHRdunBR4DCgTZ97rxUAUyMg4pvmGIxsO09zfC4AgPNZN/QRDgH7ZFuFfREQAQDAms4Kf4RDwD4dh0PrHm8WNuEYRMzWeZtiD8dmAgA2Z/0AGML12zfrhET6FZswgmhmdhGKAAAAMH2279iEEUSwhZMarYQepu20lSjvbwAA5kxABKdYHpa5TvruFMQwXevuy+/9DQDAHNnFbGbOu+Fiw+fVLl+9svHQTEM5YVo2ec96fwMAh3ae9Q/rLqxLQAR7ohHDNHivAgCAXcxYMrfRQ5cuXNzpht+q58eZA6BPQ763V/UdfQYAOIn1hHnZ52EPBEQztOtgpHenvfE2OT4RMD5Teu+eVqvjIwEAzNeq9cDlabtaB7SL2UxtuoDMdaPiUMdkmuvzB4zDukHWlAIvANiV42OGXv8DU7fusryr5V1ANGPrhBaXLlycfbixTVi2y+fFhxMAAOzHWSNs57Iuvu22ydy39eZsiBMl2cVs5jSEI9c/D/sYjmfXPmAftlk50PuZupOWe8s2cGybM5BOvYdsur0x9fllc+ddDzSCiC7tepTQ8uMC0zH29+y2obOwminrZTQAsL2e+4BDYPThPMv4ee4rIII905wB4GybhD89bxwC25tL7zhr+8L2B9uyixkAXdtm91ArXjA8u1NCn+YS8pyX/sc+GEEEe6Rxw/x4X8Pu2Z0SAIYnIAKge+sek0w4BLsn5AEOSc+Bk9nFDPbEhiRMz/H79vqVx17fz6tWont9LoDpcTY8gM0IiGDHrHTA9I3hfTz0N5wn/f+5nCoYmLezzoaX6GO98rrDyexiBgAzdJ5juqxzX6cbB8bI2fCAOThPkHme+wqIONHxB6wPT4DD2lXf3bSH6/dAb/S96TECCE523vfHWruYVdUXknwtyStJvtFau6eqbknyfyV5c5IvJPkfW2v/ZXH7h5O8Z3H7/6W1dvlcVXIQ6wzFTTRlhqMXMXf72lDZ5wZQj6ca14tgXqbax3ruRZcuXNzqs22KrzP92nQ538XyvckIon/VWrvYWrtn8ftDSZ5qrd2d5KnF76mqtyS5P8lbk9yb5ANVdcO5K2WvfMPMhOhFzJLeOjl60Y7YYINz0YvWpNcwRYc+0+55djG7L8mji+uPJnnX0vTHWmsvt9Y+n+SFJG87x/9hz7bZKLEhw4joRcAY6EUDsMEHr9JNL1p3w/n4tjBlx8v78rK8atp5rRsQtSS/X1XPVtWDi2lvaq29lCSLy1sX029P8qWl+764mMbMCIkYgF7ELOmnk6MX7ZiNN4Y20T6sF+X0/rHrjWcYg30u1+ue5v4drbWrVXVrkier6rOn3LZWTGuvutFRE3swSV6T165ZBrs20Q9D+qUXAWOw816U6EdDHGsBJk4vWtAPYDfWGkHUWru6uLyW5IM5Go745aq6LUkWl9cWN38xyZ1Ld78jydUVj/lIa+2e1to9N+Xm7ecA6IZexBwJ6qdnH71o8Xjd96N1j7NgY5Bdm+IypRcBu3ZmQFRV31FVrzu+nuTHknwqyRNJHljc7IEkH1pcfyLJ/VV1c1XdleTuJE/vunDGwYYNh6IXAWOgF+3foY6zAFOmFwH7sM4uZm9K8sGqOr79b7bWfq+qPpbk8ap6T5IvJnl3krTWnquqx5N8Osk3kry3tfbKXqoHeqIXMTtzCNk73GDXiw6ow+WLc5hDT92AXgTs3JkBUWvtL5P8dyum/3WSd55wn/cled+5qwNY0IuAMdCLYH6mGETqRcA+VGsrj0122CKq/nOSv0vyV0PXsqXvjtqHMuX651j7P2utvfHQxeyKXjSoKdeeTLv+KdeerK5/0r0oSarqa0meH7qOLc1xmZoKtQ9HLxqfOS5TU6H24ZyrF40iIEqSqnqmtXbP0HVsQ+3DmXL9ah+nKc+b2ocz5fqnXHsy/fpPMuX5mnLtybTrV/twpl7/SaY8X1OuPZl2/WofznnrX+ssZgAAAADMl4AIAAAAoHNjCogeGbqAc1D7cKZcv9rHacrzpvbhTLn+KdeeTL/+k0x5vqZcezLt+tU+nKnXf5Ipz9eUa0+mXb/ah3Ou+kdzDCIAAAAAhjGmEUQAAAAADGDwgKiq7q2q56vqhap6aOh6VqmqX62qa1X1qaVpt1TVk1X1ucXlG5b+9vBifp6vqkvDVP3NWu6sqj+sqs9U1XNV9TOL6aOvv6peU1VPV9UnFrX/wlRqX6rnhqr6eFV9ePH7lGr/QlX9WVVdqapnFtMmU/+m9KL90ouGpRdNh160X3rRsPSi6dCL9ksvGpZedIrW2mA/SW5I8hdJ/nmSb0vyiSRvGbKmE+r8l0l+IMmnlqb9hyQPLa4/lOTfL66/ZTEfNye5azF/NwxY+21JfmBx/XVJ/nxR4+jrT1JJvnNx/aYkH03yg1OofWke/m2S30zy4SktN4uavpDku6+bNpn6N5xXvWj/tetFwy47etEEfvSig9SuFw277OhFE/jRiw5Su1407LKjF53wM/QIorcleaG19pettb9P8liS+wau6VVaa3+c5CvXTb4vyaOL648medfS9Mdaay+31j6f5IUczecgWmsvtdb+dHH9a0k+k+T2TKD+duRvF7/etPhpmUDtSVJVdyT5iSS/vDR5ErWfYur1n0Qv2jO9SC/asanXfxK9aM/0Ir1ox6Ze/0n0oj3Ti/SiHdtZ/UMHRLcn+dLS7y8upk3Bm1prLyVHb/Akty6mj3aequrNSb4/RynvJOpfDP+7kuRakidba5OpPckvJfm5JP+wNG0qtSdHjf73q+rZqnpwMW1K9W9iyvVP7jXRiw5OL5qOKdc/uddELzo4vWg6plz/5F4Tvejg9KJT3LjjYjdVK6ZN/bRqo5ynqvrOJL+T5Gdba1+tWlXm0U1XTBus/tbaK0kuVtV3JflgVX3vKTcfTe1V9ZNJrrXWnq2qH1rnLiumDb3cvKO1drWqbk3yZFV99pTbjrH+TUy9/lVGOU960WHpRUmGr38TU69/lVHOk150WHpRkuHr38TU619llPOkFx2WXpTkjPqHHkH0YpI7l36/I8nVgWrZ1Jer6rYkWVxeW0wf3TxV1U05ajy/0Vr73cXkydSfJK21v0nyR0nuzTRqf0eSn6qqL+RoWO4PV9WvZxq1J0laa1cXl9eSfDBHwxEnU/+Gplz/ZF4TvWgQetEIlpsNTLn+ybwmetEg9KIRLDcbmHL9k3lN9KJB6EVn1D90QPSxJHdX1V1V9W1J7k/yxMA1reuJJA8srj+Q5ENL0++vqpur6q4kdyd5eoD6kiR1FEP/SpLPtNZ+celPo6+/qt64SKVTVd+e5EeSfDYTqL219nBr7Y7W2ptztFz/QWvtpzOB2pOkqr6jql53fD3JjyX5VCZS/xb0oj3Ti/SibehFetGu6UV60Tb0Ir1o1/QivWgbB+lFbcAjcLejI2v/eI6O2v4XSX5+6HpOqPG3kryU5Os5SuHek+SfJnkqyecWl7cs3f7nF/PzfJJ/PXDt/yJHw8g+meTK4ufHp1B/ku9L8vFF7Z9K8u8W00df+3Xz8UP5xyPkT6L2HJ214hOLn+eO35tTqX/LedaL9lu7XjT88qMXTeBHL9p77XrR8MuPXjSBH71o77XrRcMvP3rRip9a3AkAAACATg29ixkAAAAAAxMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHRubwFRVd1bVc9X1QtV9dC+/g/AafQiYAz0ImAM9CLgNNVa2/2DVt2Q5M+T/GiSF5N8LMm/aa19euf/DOAEehEwBnoRMAZ6EXCWfY0geluSF1prf9la+/skjyW5b0//C+AkehEwBnoRMAZ6EXCqG/f0uLcn+dLS7y8mefvyDarqwSQPJskNueG/f21ev6dSgEP5Wv7LX7XW3jh0HUv0IujQFHtRoh/B3Px/+bv8fXu5hq5jiV4ES77n+/7rqX//80++9kCV7NcmvWhfAdGqf/4t+7K11h5J8kiSvL5uaW+vd+6pFOBQPtJ++/8duobr6EXQoSn2okQ/grn5aHtq6BKupxfBksuXr5z690sXLh6okv3apBftaxezF5PcufT7HUmu7ul/AZxELwLGQC8CxkAvgoXLV08Ph3q1r4DoY0nurqq7qurbktyf5Ik9/S+Ak+hFwBjoRcAY6EWwsM7ooB5DpL3sYtZa+0ZV/c9JLie5Icmvttae28f/AjiJXgSMgV4EjIFeBJxlX8cgSmvtPyb5j/t6fIB16EXAGOhFwBjoRbC+uRyDaBP72sUMAAAAgIkQEAEAAABd6XGE0FkERAAAAEB3TgqJeg2PBEQAAABAl64Pg3oNh5I9HqQaAAAAYOx6DoWWGUEEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERABLK8MTAAAa5klEQVQAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAd1+eqVoUsAAOA6AiIA4OBWhUSCIwCA4dw4dAEAQJ/WCYkuXbh4qHIAALpmBBEAMFpGFQEAPbh89crg6z0CIgBg1IZeWQIA2KfldZ0h13sERADA6AmJAAD2S0AEAAAAMIAxfQkmIAIADsqBpwEAxkdABACMnlAJAGC/BEQAwMFtEvgIhwCAORrT7mVJcuPQBQBwspM+NGwwMwfHy/FpK0eW9fFYfp28LgBwfpcuXHzVetCQn7ECIoAJOv4gsZHGHFiOx+/6lVc9CADmR0AEMGGXr16xgQbszVlD3/UgANiddT5T9zniyDGIACZubPsuA33RgwDg/IYOh5I1AqKq+tWqulZVn1qadktVPVlVn1tcvmHpbw9X1QtV9XxVXdpptUC39CJgLHrpR5sEP0IiOLxeehHM3aULF88Mei5fvXKQYxWtM4Lo15Lce920h5I81Vq7O8lTi99TVW9Jcn+Sty7u84GqumFn1QI9+7V02IvWbfw2zuCgfi0z70d6CkzCr2XmvejY8cbx9T/Abp0ZELXW/jjJV66bfF+SRxfXH03yrqXpj7XWXm6tfT7JC0netqNagY713Isc3wPGped+BIxHD73orCBISEQPVo0c2tf2wbYHqX5Ta+2lJGmtvVRVty6m357k/1m63YuLaQD70E0vWv4QGNOpMIFv6qYfncQBq2EUZtGLttnFdZf956z/r9dxKIf+bN31WcxqxbS28oZVDyZ5MElek9fuuAygc7PuRVZKYFJm3Y+AyZh9L9rVhrRwiDE59PK27VnMvlxVtyXJ4vLaYvqLSe5cut0dSa6ueoDW2iOttXtaa/fclJu3LAPonF4EjIV+BIzB5HvRkLuN2WWN3m0bED2R5IHF9QeSfGhp+v1VdXNV3ZXk7iRPn69EgBPpRdChkw5WOvCKfff9yLfqMApd96LzfA4Ih2C909z/VpI/SfLfVNWLVfWeJO9P8qNV9bkkP7r4Pa2155I8nuTTSX4vyXtba6/sq3igH3oRkJy+An+ogKKHfiTsgfGbay8ac/8Zc22wC2ceg6i19m9O+NM7T7j9+5K87zxFAVxPLwLG8u2ufvRqNprg8PSi3RnL5wsMbdtdzAAAmDGhDzCUMfafMdYEuyYgAgBGz1llhrHO8+q5B/ZhLL3l0oWLo6kF9m3Xp7kHAGBGLl24uDKgs8EE7NtJ/ee022/7f45dvnpFf6NbAiIAYLKsxB+G5xkYyqH7j35HzwREAMDkWIEHANgtAREAMHoCIQCA/XKQagAAAIDOGUEEA1o+6J5vxwEAABiKgAgO7KQzMRxPFxQBAABwaHYxgwNa5zSdl69e2eh0ngAAAHBeAiI4kE1DHyERAAAAhyIgggMQ9gAAADBmAiLYs/OEQ4IlAAAADkFABAAAANA5ARHskRFAAAAATIGACPZEOAQAAMBUCIgAAAAAOicgAgAAAOicgAj25NKFi0OXAAAAAGsREAEAAAB0TkAEAAAA0DkBEezReXczs5saAAAAhyAgAgAAAOicgAj2bNtRQEYPAQAAcCgCIjiATcMe4RAAAACHJCCCA1k39BEOAQAAcGg3Dl0A9OQ4/Ll89cqJfwMAAIBDExDBAIRBAAAAjIldzAAAAAA6JyACAAAA6JxdzABgS9cfT8zuowAATJWACAA2sOog86v+JiwCAGBK7GIGAGs6LRw6z20BAGBoRhABwJ5cvnrFSCIAOCC7f8P2BEQAsAYjggBgvFZ9TguHYDN2MQMAAGCyfIkDuyEgAgAAYJJOCoeMHoLNCYgAAACYHCOHYLfODIiq6s6q+sOq+kxVPVdVP7OYfktVPVlVn1tcvmHpPg9X1QtV9XxVXdrnDAB90IuAMdCLgDHQi0526cJFo4dgS+uMIPpGkv+1tfbfJvnBJO+tqrckeSjJU621u5M8tfg9i7/dn+StSe5N8oGqumEfxQNd0YuAMdCLgDHQi5Ych0KCITifMwOi1tpLrbU/XVz/WpLPJLk9yX1JHl3c7NEk71pcvy/JY621l1trn0/yQpK37bpwoC96ETAGehEwBnrREaEQ7NZGxyCqqjcn+f4kH03yptbaS8lRg0py6+Jmtyf50tLdXlxMA9gJvYghbLMCaqV13vQiYAz0ImBXblz3hlX1nUl+J8nPtta+WlUn3nTFtLbi8R5M8mCSvCavXbcMoHN60XCcJeRoXh0Qk2T3vWjxmPoRsBG9aLVVn9U9ra/AttYKiKrqphw1nt9orf3uYvKXq+q21tpLVXVbkmuL6S8muXPp7nckuXr9Y7bWHknySJK8vm5Z2ZwAlulFwxCIfKt1QiIrofO2j16U6EfAZvSiVzvt8/n4bz6j4WTrnMWskvxKks+01n5x6U9PJHlgcf2BJB9amn5/Vd1cVXcluTvJ07srGeiRXjQMQchqJx3zwLEQ5k8vAsZAL3q1db/Q8sUXnGydEUTvSPI/Jfmzqjp+N/0fSd6f5PGqek+SLyZ5d5K01p6rqseTfDpHR9d/b2vtlZ1XDvRGLxrAcdhx/cqUEOSI56FLehEwBnrRkk1Dn8tXr/gMhxWqteFHDb6+bmlvr3cOXQZwTh9pv/1sa+2eoevYll4E8zD1XpToRzAHH21P5avtKyceFGgKptCLthkRJByiJ5v0oo3OYgYAAABjsWnYIxyCkwmIAAAAmKx1jwEoHILTrX2aewAAABir5QDIcYZgcwIiADayal9/K2AAwJhYN4HNCYgAWMtpB4E8/puVMQAAmCbHIALgTOueIWSbM4kAAADDExABcCqhDwAAzJ+ACAAAAKBzAiIATrTp6CHHIAIAgGkSEAGwE8IhAACYLgERACe6dOHiWsGPcAgAAKbNae4BONNyAHT56hWBEAAAzIwRRABsRDgEAADzYwQRAAB0YvnkAwJ/AJYJiAAAYOZWnZVSWATAMruYAQDATF2+emVlOLTqdgD0TUAEAAAztGnoIyQC6JtdzOie4dUAAAD0zggiunb9N2XHw7B3/Q3aPh4TAOAk2653WF8B6JcRRHCC4xWkbUYVWbkCAABgSowggjPYfx8AAIC5ExDRtXVHB62zi5jdyACAMTjv+oj1GYA+CYhgAyetMFmRAgAAYMoERHRv02MMXT9SSDgEAIyJs7ICsA0HqYYtbRoMWVkDAKbAOgtAn4wggux/RciKFgAAAGMmIIKFSxcu7iXIEQ4BAIdm/QOATdnFDK5zvEJ13mMLTX3F7KT5n/p8AUAvLl246FiJAKxNQAQn6DUIOWtF8vjvvT4/ADAl24REZ93eOgDAPNnFDPgm3zICwPzsejf668/oCsA8GEEEJNksHPLNIQBMz2mf39sEPpevXrFOADAjRhABG7EiCAAcM5oIYD4ERMDahEMAwCpCIoDpExABSc4Of4RDAAAA8+UYRMA3CYEAgG1YhwCYPiOIAACgc+c505lwCGAeBEQAAECSzcKe84RKAIyPXcwAAIBvWg59Vh18WigEME8CIgAAYCVhEEA/ztzFrKpeU1VPV9Unquq5qvqFxfRbqurJqvrc4vINS/d5uKpeqKrnq+rSPmcA6INeBIyBXgSMgV4E7MM6I4heTvLDrbW/raqbkvynqvq/k/wPSZ5qrb2/qh5K8lCS/72q3pLk/iRvTXIhyUeq6ntaa6/saR6APuhFB7BqV4LEN8iwRC8CxkAvAnbuzBFE7cjfLn69afHTktyX5NHF9EeTvGtx/b4kj7XWXm6tfT7JC0nettOqge7oRcM6KTiC3uhFwBjoRcA+rHUWs6q6oaquJLmW5MnW2keTvKm19lKSLC5vXdz89iRfWrr7i4tpAOeiFw1rziHRnOeN3dOLgDHQi4BdWysgaq290lq7mOSOJG+rqu895ea16iFedaOqB6vqmap65ut5eb1qga7pRft31q5kcw5S5jxv7NY+elGiHwGb0YuAXVsrIDrWWvubJH+U5N4kX66q25JkcXltcbMXk9y5dLc7klxd8ViPtNbuaa3dc1Nu3qJ0oFd6ETAGu+xFi8fTj4CN6UXArqxzFrM3VtV3La5/e5IfSfLZJE8keWBxsweSfGhx/Ykk91fVzVV1V5K7kzy968KBk12+euWbP3OhFx1OzwekntN7hv3Qi4Ax0IuAfVjnLGa3JXm0qm7IUaD0eGvtw1X1J0ker6r3JPlikncnSWvtuap6PMmnk3wjyXsdHR8OZ8YbuHoRMAZ6EaOz/Nnfc8jfGb0I2LkzA6LW2ieTfP+K6X+d5J0n3Od9Sd537uoAFvSiw5lxyAjnphcxJvp1v/QiYB82OgYRMG5WFDmvXpch37gDU3LSbuR6GQDnsc4uZgDM3NyCoeP5sbEEzM3c+jUA4yEggpk4aYXx8tUrNpI50aYbGlNZli5duPiqb9jPqn0q8wb066SerX8BsAt2MQOgC751B+ZIOATArgiIADq2yYbF1DZCplYvwCYuXbiozwGwUwIimInTVhKNnOA06+x6ZSMEYHjH/VhPBmAfHIMIgNlubBzP13FI6phcAACwmhFE0AmjiOiZb9wBAOB0AiKYERvAcDrvEQAAWE1ABDNjAxgAAIBNOQYRzNClCxftUgY7tuo9JZAFAGAuBEQwU8sbrsIiOJ+T3kPL04VFAABMmV3MoAMO0Avns877RxALAMCUCYgAYA2CVgAA5swuZgCwgeOQyO5lAADMiYAIALYgFAIAYE7sYgYAAADQOQERAAAAQOcERAAAAACdExABAAAAdE5ABAAAANA5AREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHROQAQAAADQOQERAAAAQOcERAAAAACdExABAAAAdO7GoQsAAIZ3+eqVb/n90oWLA1UCAMAQjCCCEbp+Qw1gXy5fvbKy55w0HWDM9C2A7QmIYGSs2ACHsk6/ERQBU3Hcq/QsgO0IiACgQzaggDm5vqfpcQCbExABQGe22XCysQWMlf4EsBsCIhgRKzgAALthvQpgM2sHRFV1Q1V9vKo+vPj9lqp6sqo+t7h8w9JtH66qF6rq+aq6tI/CYc6cPehkehEMx8bWP9KLgDHQi4Bd2mQE0c8k+czS7w8leaq1dneSpxa/p6rekuT+JG9Ncm+SD1TVDbspF0AvAkZBL4IREFzrRcDurBUQVdUdSX4iyS8vTb4vyaOL648medfS9Mdaay+31j6f5IUkb9tNuTB/Rg+dTC8CxkAvAsZALwJ2bd0RRL+U5OeS/MPStDe11l5KksXlrYvptyf50tLtXlxMAzgvvQgYA70IRqLzL9b0ImCnzgyIquonk1xrrT275mPWimltxeM+WFXPVNUzX8/Laz40zFvnKzmn0otgeHrU/nrR4rH1I2AtehGwDzeucZt3JPmpqvrxJK9J8vqq+vUkX66q21prL1XVbUmuLW7/YpI7l+5/R5Kr1z9oa+2RJI8kyevrlpXNCWCJXgQ7cunCRcft2N5eelGiH8GuzTzU1ouAnTtzBFFr7eHW2h2ttTfn6MBmf9Ba++kkTyR5YHGzB5J8aHH9iST3V9XNVXVXkruTPL3zyoGDu3z1yrf8HJJeBMOa+YbW2vQiGJ8e+5NeBOzDOiOITvL+JI9X1XuSfDHJu5OktfZcVT2e5NNJvpHkva21V85dKTA6xyHRwCtmehFsYZNRRD1ufG1BL4IR6bhv6UXA1qq14UcNvr5uaW+vdw5dBrCG0zYob7jthWdba/ccsJyd0ovo1Wnv6yluZH2k/fake1GiH8E2RvLF1Td9tD2Vr7avrDr2z2ToRTB9m/Si84wgAjp0vNLl+CUwH2PZmAI4D70M4HwERMBWVq+EvXDwOgAAADg/AREAk7I8es23xQAAsBsCIgBG76RdGoVFAACwG2ee5h4AhrTu8a4cFwsAALYnIAJgtDYNfYREAACwHQERAAAAQOcERADMilFEAACwOQERAAAAQOcERAAAAACdExABMFrbnLre6e4BAGBzAiIARm2TwEc4BAAA2xEQATB66wQ/wiEAANjejUMXAADrOA6Arj9LmWAIAADOT0AEwKQIhAAAYPfsYgYAAADQOSOIAAAAYEKu3+V+mdHWbMsIIgAAAJiJ08IjOI2ACAAAACbEKCH2wS5mAAAAMDFCInbNCCIAAAAYMbuNcQgCIgAAAIDOCYgAAAAAOicgAgAAgJG6fPWK4w1xEAIiAAAAgM45ixmsadWB4ST5AADAPtnm4FAERHCG084YcPw3TRsAAIAps4sZnGLd00k67SQAAABTJiACAAAA6JyACE6xya5jRhEBAAAwVQIi2CEhEQAAAFMkIAIAAADonIAIAAAAoHMCIjiDU9gDAAAwdwIiWIOQCAAAgDkTEMGahEQAAADMlYAINiAkAgAAYI5uHLoAmJrlkGj5tPbCIwAAAKZKQATnIBQCAABgDtbaxayqvlBVf1ZVV6rqmcW0W6rqyar63OLyDUu3f7iqXqiq56vq0r6KB/qiFwFjoBfBOC2P7O6BXgTs2ibHIPpXrbWLrbV7Fr8/lOSp1trdSZ5a/J6qekuS+5O8Ncm9ST5QVTfssGagb3oRMAZ6ETAGehGwM+c5SPV9SR5dXH80ybuWpj/WWnu5tfb5JC8keds5/g/AafQiYAz0ImAM9CJga+sGRC3J71fVs1X14GLam1prLyXJ4vLWxfTbk3xp6b4vLqZ9i6p6sKqeqapnvp6Xt6se6I1eBIzBzntRoh/BefS2e9mCXgTs1LoHqX5Ha+1qVd2a5Mmq+uwpt60V09qrJrT2SJJHkuT1dcur/g6wgl4EjMHOe1GiHwEb04uAnVprBFFr7eri8lqSD+ZoOOKXq+q2JFlcXlvc/MUkdy7d/Y4kV3dVMNAvvQgYA70IxqfHM8vqRcCunRkQVdV3VNXrjq8n+bEkn0ryRJIHFjd7IMmHFtefSHJ/Vd1cVXcluTvJ07suHOiLXgSMgV4EjIFeBOzDOruYvSnJB6vq+Pa/2Vr7var6WJLHq+o9Sb6Y5N1J0lp7rqoeT/LpJN9I8t7W2it7qR7oiV4EjIFeBCPV2SgivQjYuWpt+N1KX1+3tLfXO4cuAzinj7TffnbpNKuToxfBPEy9FyX6EczBR9tT+Wr7yqpj/0yGXgTTt0kvGkVAVFX/OcnfJfmroWvZ0ndH7UOZcv1zrP2ftdbeeOhidkUvGtSUa0+mXf+Ua09W1z/pXpQkVfW1JM8PXceW5rhMTYXah6MXjc8cl6mpUPtwztWLRhEQJUlVPTPVb/vUPpwp16/2cZryvKl9OFOuf8q1J9Ov/yRTnq8p155Mu361D2fq9Z9kyvM15dqTadev9uGct/61zmIGAAAAwHwJiAAAAAA6N6aA6JGhCzgHtQ9nyvWrfZymPG9qH86U659y7cn06z/JlOdryrUn065f7cOZev0nmfJ8Tbn2ZNr1q30456p/NMcgAgAAAGAYYxpBBAAAAMAABg+Iqureqnq+ql6oqoeGrmeVqvrVqrpWVZ9amnZLVT1ZVZ9bXL5h6W8PL+bn+aq6NEzV36zlzqr6w6r6TFU9V1U/s5g++vqr6jVV9XRVfWJR+y9Mpfalem6oqo9X1YcXv0+p9i9U1Z9V1ZWqemYxbTL1b0ov2i+9aFh60XToRfulFw1LL5oOvWi/9KJh6UWnaK0N9pPkhiR/keSfJ/m2JJ9I8pYhazqhzn+Z5AeSfGpp2n9I8tDi+kNJ/v3i+lsW83FzkrsW83fDgLXfluQHFtdfl+TPFzWOvv4kleQ7F9dvSvLRJD84hdqX5uHfJvnNJB+e0nKzqOkLSb77ummTqX/DedWL9l+7XjTssqMXTeBHLzpI7XrRsMuOXjSBH73oILXrRcMuO3rRCT9DjyB6W5IXWmt/2Vr7+ySPJblv4JpepbX2x0m+ct3k+5I8urj+aJJ3LU1/rLX2cmvt80leyNF8DqK19lJr7U8X17+W5DNJbs8E6m9H/nbx602Ln5YJ1J4kVXVHkp9I8stLkydR+ymmXv9J9KI904v0oh2bev0n0Yv2TC/Si3Zs6vWfRC/aM71IL9qxndU/dEB0e5IvLf3+4mLaFLyptfZScvQGT3LrYvpo56mq3pzk+3OU8k6i/sXwvytJriV5srU2mdqT/FKSn0vyD0vTplJ7ctTof7+qnq2qBxfTplT/JqZc/+ReE73o4PSi6Zhy/ZN7TfSig9OLpmPK9U/uNdGLDk4vOsWNOy52U7Vi2tRPqzbKeaqq70zyO0l+trX21apVZR7ddMW0wepvrb2S5GJVfVeSD1bV955y89HUXlU/meRaa+3Zqvqhde6yYtrQy807WmtXq+rWJE9W1WdPue0Y69/E1OtfZZTzpBcdll6UZPj6NzH1+lcZ5TzpRYelFyUZvv5NTL3+VUY5T3rRYelFSc6of+gRRC8muXPp9zuSXB2olk19uapuS5LF5bXF9NHNU1XdlKPG8xuttd9dTJ5M/UnSWvubJH+U5N5Mo/Z3JPmpqvpCjobl/nBV/XqmUXuSpLV2dXF5LckHczQccTL1b2jK9U/mNdGLBqEXjWC52cCU65/Ma6IXDUIvGsFys4Ep1z+Z10QvGoRedEb9QwdEH0tyd1XdVVXfluT+JE8MXNO6nkjywOL6A0k+tDT9/qq6uaruSnJ3kqcHqC9JUkcx9K8k+Uxr7ReX/jT6+qvqjYtUOlX17Ul+JMlnM4HaW2sPt9buaK29OUfL9R+01n46E6g9SarqO6rqdcfXk/xYkk9lIvVvQS/aM71IL9qGXqQX7ZpepBdtQy/Si3ZNL9KLtnGQXtQGPAJ3Ozqy9o/n6Kjtf5Hk54eu54QafyvJS0m+nqMU7j1J/mmSp5J8bnF5y9Ltf34xP88n+dcD1/4vcjSM7JNJrix+fnwK9Sf5viQfX9T+qST/bjF99LVfNx8/lH88Qv4kas/RWSs+sfh57vi9OZX6t5xnvWi/tetFwy8/etEEfvSivdeuFw2//OhFE/jRi/Zeu140/PKjF634qcWdAAAAAOjU0LuYAQAAADAwAREAAABA5wREAAAAAJ0TEAEAAAB0TkAEAAAA0DkBEQAAAEDnBEQAAAAAnRMQAQAAAHTu/we6Nns6a1h5nAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1440x1440 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "a_ = mask[0, :, :]\n",
    "b_ = mask[1, :, :]\n",
    "c_ = mask[2, :, :]\n",
    "d_ = mask[3, :, :]\n",
    "fig, axs = plt.subplots(3, 4, figsize=(20, 20))\n",
    "axs[0, 0].imshow(a)\n",
    "axs[0, 1].imshow(b)\n",
    "axs[0, 2].imshow(c)\n",
    "axs[0, 3].imshow(d)\n",
    "axs[1, 0].imshow(a_)\n",
    "axs[1, 1].imshow(b_)\n",
    "axs[1, 2].imshow(c_)\n",
    "axs[1, 3].imshow(d_)\n",
    "axs[2, 0].imshow(a - a_)\n",
    "axs[2, 1].imshow(b - b_)\n",
    "axs[2, 2].imshow(c - c_)\n",
    "axs[2, 3].imshow(d - d_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "def component_domination(p):\n",
    "    components, component_sizes = _find_components(p)\n",
    "    m = _write_preds(components, component_sizes)\n",
    "    return m\n",
    "\n",
    "def _find_components(p):\n",
    "    C, H, W = p.shape\n",
    "    total_components = 0\n",
    "    channel_components = []\n",
    "    for c in range(C):\n",
    "        max_label, labelled_components = cv2.connectedComponents(p[c].astype(np.uint8))\n",
    "        n_components = max_label - 1\n",
    "        labelled_components[labelled_components > 0] += total_components  # offset labels\n",
    "        total_components += n_components\n",
    "        channel_components.append(labelled_components)\n",
    "    components = np.stack(channel_components, axis=0)\n",
    "    component_sizes = [(label, (components == label).sum()) for label in range(1, total_components+1)]\n",
    "    component_sizes = sorted(component_sizes, key=lambda item: item[1])  # sort by size\n",
    "    return components, component_sizes\n",
    "\n",
    "def _write_preds(components, component_sizes):\n",
    "    C, H, W = components.shape\n",
    "    m = np.zeros(p.shape, dtype=np.uint8)\n",
    "    for label, size in component_sizes:\n",
    "        component_mask_3d = components == label\n",
    "        component_mask_flatten = component_mask_3d.any(axis=0)\n",
    "        component_mask_expand = np.repeat(component_mask_flatten[np.newaxis, :, :], C, axis=0)\n",
    "\n",
    "        # set the mask region to zero across all channels\n",
    "        m[component_mask_expand] = 0\n",
    "\n",
    "        # set just the channel applicable to the mask to 1\n",
    "        m[component_mask_3d] = 1\n",
    "    return m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fc63148c470>"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x1152 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "m = component_domination(p)\n",
    "a_ = m[0, :, :]\n",
    "b_ = m[1, :, :]\n",
    "fig, axs = plt.subplots(3, 2, figsize=(16, 16))\n",
    "axs[0, 0].imshow(a)\n",
    "axs[0, 1].imshow(b)\n",
    "axs[1, 0].imshow(a_)\n",
    "axs[1, 1].imshow(b_)\n",
    "axs[2, 0].imshow(a - a_)\n",
    "axs[2, 1].imshow(b - b_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[0.83678594 0.56912713 0.46975601]\n",
      "  [0.75783896 0.43517061 0.78789503]\n",
      "  [0.93466037 0.14855105 0.22307526]]\n",
      "\n",
      " [[0.48628859 0.22343163 0.3027209 ]\n",
      "  [0.54954617 0.34046917 0.62241817]\n",
      "  [0.14282232 0.63671086 0.16567195]]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[[ True,  True,  True],\n",
       "        [ True,  True,  True],\n",
       "        [ True, False, False]],\n",
       "\n",
       "       [[ True, False, False],\n",
       "        [ True, False,  True],\n",
       "        [False,  True, False]]])"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold = np.array([0.3, 0.4])\n",
    "r = np.random.rand(2, 3, 3)\n",
    "print(r)\n",
    "r > threshold[:, np.newaxis, np.newaxis]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
